package asia.hymsk.spring.controller;

import asia.hymsk.spring.anno.Log;
import asia.hymsk.spring.pojo.Response;
import asia.hymsk.spring.service.RecommendService;
import asia.hymsk.spring.utils.JwtUtils;
import org.springframework.web.bind.annotation.*;

/**
 * @author 花于陌上开
 */
@CrossOrigin  //允许跨域访问
@RestController
@RequestMapping("/recommend/")
public class RecommendController {
    final RecommendService recommendService;

    public RecommendController(RecommendService recommendService) {
        this.recommendService = recommendService;
    }

    /**
     * 获取历史热门商品列表
     *
     * @return 返回列表及描述
     */
    @Log
    @GetMapping("/list/history/")
    public Response historyList() {
        return recommendService.historyList();
    }

    /**
     * 获取商品平均评分列表
     *
     * @return 返回列表及描述
     */
    @Log
    @GetMapping("/list/average/")
    public Response averageList() {
        return recommendService.averageList();
    }

    /**
     * 获取近期热门商品列表
     *
     * @return 返回列表及描述
     */
    @Log
    @GetMapping("/list/recent/")
    public Response recentList(String dateTime) {
        return recommendService.recentList(dateTime);
    }

    /**
     * 获取用户推荐商品列表
     *
     * @param token 用户token
     * @return 返回列表及描述
     */
    @Log
    @PostMapping("/recommend/")
    public Response recommend(String token) {
        String userName = JwtUtils.parseUserName(token);
        if(userName == null){
            return Response.error("用户身份认证过期或不存在");
        }
        return recommendService.recommend(userName);
    }

    /**
     * 获取用户实时推荐商品列表
     *
     * @param token 用户token
     * @return 返回列表及描述
     */
    @Log
    @PostMapping("/realtime/")
    public Response realtime(String token) {
        String userName = JwtUtils.parseUserName(token);
        if(userName == null){
            return Response.error("用户身份认证过期或不存在");
        }
        return recommendService.realtime(userName);
    }
}
